package com.changgou.canal.listener;

import com.alibaba.otter.canal.protocol.CanalEntry;
import com.changgou.canal.config.RabbitMQConfig;
import com.xpand.starter.canal.annotation.CanalEventListener;
import com.xpand.starter.canal.annotation.ListenPoint;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;

import java.sql.SQLOutput;

/**
 * @author zero
 * @date 2020/7/1
 */

@CanalEventListener
public class BusinessListener {

    @Autowired
    private RabbitTemplate rabbitTemplate;


    /**
     *
     * @param entryType 当前操作数据库的类型
     * @param rowData   当前操作数据库的数据
     */
    @ListenPoint(schema = "changgou_business",table = "tb_ad")
    public void update(CanalEntry.EntryType entryType , CanalEntry.RowData rowData){
        System.out.println("我是广告表,我的数据改变了");

        //获取改变之前的数据
        //rowData.getBeforeColumnsList().forEach(c-> System.out.println("改变之前的数据:"+c.getName()+":"+c.getValue()));
        //获取改变之后的数据
        //rowData.getAfterColumnsList().forEach(c-> System.out.println("改变之后的数据:"+c.getName()+":"+c.getValue()));

        //获取所有的字段列
        for (CanalEntry.Column column : rowData.getAfterColumnsList()) {
            //拿到字段列是position的
            if ("position".equals(column.getName())){
                System.out.println("发送的消息:"+column.getValue());
                //将position字段对应的值发送消息到rabbitmq中
                rabbitTemplate.convertAndSend("", RabbitMQConfig.AD_UPDATE_QUEUE,column.getValue());
            }
        }

    }


}
